////////////////////////////////////////////////////////////////
// filename: camera.h
// description: Camer class declaration
// autor: Jay Tomten (jaytomten@gmail.com)
// notes:

// namespace 
using namespace std;

// defines
#ifndef __CAMERA__
#define __CAMERA__

#define X 0
#define Y 1
#define Z 2

// includes
#include "vertex.h"

// globals

////////////////////////////////////////////////////////////////
// Camera - class to control and manipulate our camera
class Camera {

public:

    bool demo;
    bool story;

    Camera();  // constructor
    ~Camera(); // destructor

    bool Init();                          // initialize camera options
    bool Update(float d);                 // make necessary moves and position the camera
    void In();                            // zoom in
    void Out();                           // zoom out
    void Left();                          // move the camera left
    void Right();                         // move the camera right
    void GoTo(float x, float y, float z); // go to an assigned location
    float DistanceTo(float x, float y, float z); // return the distance to the object
    // float AngleTo(float x, float y, float z); // return the angle/vector to an object // future need

private:

    bool in;
    bool out;
    bool left;
    bool right;

    Vertex pos; // camera position [x,y,z]
    Vertex aim; // camera aim point [x,y,z]
    Vertex top; // camera up direction [x,y,z]
    Vertex vel; // camera velocity [x,y,z]

    Vertex camLimitPos; // the cameras positive limit
    Vertex camLimitNeg; // the cameras negative limit

};

#endif
